'use strict'  //使用严格模式

const http=require('http');

//使用``可以换行
let html=` 
    <!DOCTYPE html>
    <html>
        <head>
            <title>First Server</title>
        </head>
        <body>
            <div>Node.js in service.</div>
        </body>
    </html>
    `
let routerTable={
    '/':async (request,response)=>{
        response.setHeader('content-type','text/html;charset=utf-8');
        //让浏览器以这种格式进行编译，编译对象是请求返回的结果
        response.end(html);
    },
    '/x/y':async (request,response)=>{
        response.end('--ok--');
    },
    '/x/y/z':async (request,response)=>{
        let bufferList=[];
        let totalLength=0;

        // console.log(request.url,request.headers,request.method);

        // if(request.url!='/x/y/z'){
        //     response.statusCode=404;
        //     response.end('page not found');
        //     return
        // }

        request.on('data',chunk=>{    //request是一个可读流
            // console.log(chunk.toString());
            totalLength+=chunk.length;
            bufferList.push(chunk);
        });
        let bodyData=null;
        request.on('end',()=>{  //没有数据了的时候触发
            if(bufferList.length>0){
                bodyData=Buffer.concat(bufferList,totalLength);  //把所有的buffer小片段拼接
            }
            bufferList=[];  //bufferList中的数据已经存到了bodyData中，这一步是在清理内存
            if(bodyData){
                response.setHeader('content-type','text/plain;charset=utf-8');
                //此处的content-type是给浏览器看的，让浏览器以文本的格式返回结果
                response.end(bodyData);
            }else{
                response.end();
            }
        })
    }
}


let serv=http.createServer()
    // response.setHeader('content-type','text/html;charset=utf-8');  //告诉浏览器返回去的内容是什么类型，好让浏览器编译
    // response.end(html);  //关闭连接

serv.listen(3456);  //监听3456端口号

serv.on('request', (request,response)=>{
    console.log(request);
    if(routerTable[request.url]==undefined){
        response.statusCode=404;
        response.end('page not found');
        return
    }
    routerTable[request.url](request,response)  
})


/*
request={
    url:发送请求时我们写的url端口号后面的--/x/y/z,
    method:post,
    Host:localhost:3456,
    headers:{'content-type':'application/x-www-form-urlencoded'}
}
*/